﻿using System;
using System.Data.Objects;
using Meraz.Core.Model;
namespace Meraz.Core.Data
{
    public interface IMerazContext
    {
        void AddToAliases(Alias entity);
        void AddToBlogs(Blog entity);
        void AddToBlogStudies(BlogStudy entity);
        void AddToDomains(Domain entity);
        void AddToFrames(Frame entity);
        void AddToLinks(Link entity);
        void AddToMembers(Member entity);
        void AddToMemberRoles(MemberRole entity);
        void AddToPeople(Person entity);
        void AddToPosts(Post entity);
        void AddToPosters(Poster entity);
        void AddToIssues(Issue entity);
        void AddToRoles(Role entity);
        void AddToTopics(Topic entity);
        void AddToTweets(Tweet entity);
        void AddToTwitterClients(TwitterClient entity);
        void AddToTwitterLinks(TwitterLink entity);
        void AddToTwitterMentions(TwitterMention entity);
        void AddToTwitterStudies(TwitterStudy entity);
        void AddToTwitterTags(TwitterTag entity);
        void AddToTwitterUsers(TwitterUser entity);
        void AddToUrls(Url entity);
        void AddToUrlRedirects(UrlRedirect entity);
        void LoadAggregate(Post post);
        void DeleteTweet(long tweetID);
        void CreateTwitterLink(long tweetID, int urlID, int sequence, string originalUrl, string tone, bool isError);
        int CreateUrl(string url, int domainID);
        int CreateUrlRedirect(string startUrl, string finishUrl);
        int CreateDomain(string domainName, int parent);
        void Save();
        void SaveAndAccept();
        IObjectSet<Alias> Aliases { get; }
        IObjectSet<Blog> Blogs { get; }
        IObjectSet<BlogStudy> BlogStudies { get; }
        IObjectSet<Domain> Domains { get; }
        IObjectSet<Frame> Frames { get; }
        IObjectSet<Link> Links { get; }
        IObjectSet<Member> Members { get; }
        IObjectSet<MemberRole> MemberRoles { get; }
        IObjectSet<Role> Roles { get; }
        IObjectSet<Person> People { get; }
        IObjectSet<Post> Posts { get; }
        IObjectSet<Poster> Posters { get; }
        IObjectSet<Issue> Issues { get; }
        IObjectSet<Topic> Topics { get; }
        IObjectSet<Tweet> Tweets { get; }
        IObjectSet<TwitterClient> TwitterClients { get; }
        IObjectSet<TwitterLink> TwitterLinks { get; }
        IObjectSet<TwitterMention> TwitterMentions { get; }
        IObjectSet<TwitterStudy> TwitterStudies { get; }
        IObjectSet<TwitterTag> TwitterTags { get; }
        IObjectSet<TwitterUser> TwitterUsers { get; }
        IObjectSet<Url> Urls { get; }
        IObjectSet<UrlRedirect> UrlRedirects { get; }
    }
}
